﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using Juego_Lp.Objects;
using Juego_Lp.World;


namespace Juego_Lp {
    class Program {
        static char n;        
        static void Main(string[] args) {            
           // Mapa mapa=new Mapa(40,40,"mapa.txt");
          //  GestorDeMapas gestor =new GestorDeMapas(mapa);
            Game juego = new Game();
          //  gestor.iniciar();
            
            int principal=0; 
            //char n;            
            char opcion,donde_moverse,tipoElementoCeldas;
            bool jugando = true;

            juego.presentacion();

            Console.WriteLine("Comenzemos a jugar");
            Console.WriteLine("");
            Console.WriteLine("************************* MENU PRINCIPAL ************************");
                        
            while (jugando){
                //previa de juego - compra de soldados            
                juego.imprimirCeldas();
                int numSoldados=5;              
                for (int i = 1; i <= numSoldados; i++) {
                    /************************* CREAMOS SOLDADOS ************************************/
                    Console.WriteLine();
                    Console.WriteLine("=====================================");
                    Console.WriteLine("Especificaciones para el soldado " + i);
                    Console.WriteLine("=====================================");
                    Console.WriteLine();

                    n = juego.mostrar_opciones_soldados();  //mostarar el menu para crear soldados
                    //registrara los soldados en el mapa caragara el arma tambien

                    switch (n) {                        
                        case '1': // compra pistolero
                        case '2': // compra fuego
                        case '3': // compra basuka
                        case '4': // jugar partida                             
                        case '8': // reinicia juego
                        case '9': // sale del juego
                            break;
                        default :
                            Console.WriteLine("Coloque un valor coherente, se repetirá el proceso");
                            i--;
                            continue;                            
                    }

                    if (n == '4') break;

                    /******************************** REINICIAR ****************************************/
                    if (n == '8')
                    {
                        //deberia abortar del juego
                        Console.WriteLine("Seguro que desea reiniciar el juego S/N");
                        ConsoleKeyInfo result = Console.ReadKey();
                        Console.WriteLine();
                        if (result.KeyChar == 'S' || result.KeyChar == 's')
                        {
                            juego.getMapa().reiniciarMapa();
                            Console.WriteLine("REINICIANDO - LOADING ...");
                            Console.ReadLine();                           
                            break;
                        }                        
                    }

                    /********************************** SALIR ******************************************/
                    if (n == '9') {
                        //deberia abortar del juego
                        Console.WriteLine("Desea salir del juego S/N");
                        ConsoleKeyInfo result = Console.ReadKey();
                        Console.WriteLine();
                        if (result.KeyChar == 'S' || result.KeyChar == 's') {
                            Console.WriteLine("GAME OVER");
                            Console.ReadLine();
                            jugando = false;
                            break;
                        }
                        //continue;
                    }

                    int x=0; int y=0;
                                        
                    juego.registrar_soldados(n); // n es la opcion que se ingreso y ya esta validado
                    juego.colocar_soldado(x, y, i, n);
                    juego.imprimirCeldas();
                
                }/*fin for*/

                /********************************** JUGAR ******************************************/
                if (n == '4')
                {
                    Console.WriteLine("COMENZANDO JUEGO - LOADING ... PRESS ENTER TO CONTINUE");
                    Console.ReadLine();
                    juego.creaMonstruos(); // creara un numero fijo de monstruos y los ubicara de manera aleatoria

                    while (true)
                    {
                        juego.imprimirCeldas(); //imprime celdas en cada instante de juego o turno
                        break;

                    }

                }


                //while (true) {
                //    // empieza el juego y se ira pidiendo los movimientos de los soldados, verficicando y todo lo demas
                //    juego.   imprimirCeldas(mapa); //mostrara como se incio o se encuentra mapa en ese momento en el juego
                //    opcion = juego.leer_opcion(); //se pedira opcion para moverse
                                        
                //    if (opcion == 'M') {
                //    //*********************************  M    O   V   E   R  *********************************************/
                //        Console.WriteLine("ha elegido la opcion MOVERSE");                                                
                //        juego.mostrar_opciones_mover();
                //        donde_moverse = juego.leer_opcion();    //a izquierda		w arriba 		d derecha  x abajo
                                           
                //        tipoElementoCeldas = juego.verificar_Celdas(donde_moverse,soldado); //verificara si esta disponible la Celdas            
                //        switch (tipoElementoCeldas) {
                //            case ' ': { /*cuando hay un espacio disponible*/ 
                //                Pdibujador.pintar(juego.sacar_batallon(batallon_elegido));                                                                                                
                //            }            
                //            default : { /*cuando hay algun elemento en la Celdas debera regresar y pedir una opcion*/                                
                //                Console.WriteLine("vuelva a escoger una opcion de movimiento");
                //                continue;
                //            }
                //        }                        
                //     }
                //     if (opcion == 'R') {
                //     //**************************   A    B   A   N   D   O   N  A  R ********************************/
                //         Console.WriteLine("ha elegido la opcion ABANDONAR JUEGO =(!");
                //         juego.mostrar_opciones_abandonar();
                //         opcion = juego.leer_opcion();
                //         if (opcion == 'S') {
                //             Console.Write("GAME OVER");
                //             break;
                //         }
                //    }
                //    if (!(opcion == 'P') && !(opcion == 'O') && !(opcion == 'S')) {
                //        Console.WriteLine("\n escribiste mal u.u repite el turno \n");
                //        continue;
                //    }
                //    if (juego.getObjetivos() == 6) {
                //        Console.WriteLine("\n GANASTE FELICITACIONES)! \n");
                //        break;
                //    }
                //    if (principal==1) {
                //            Console.WriteLine("\n PERDISTE se te murio tu personaje principal \n GAME OVER =)! \n");
                //            break;
                //    }            
                //}/**while de Partida Iniciada*/

                
            }/*While de Juego en Ejecucion*/
            
        } /*Fin de clase*/
    }/*Fin de Juego_LP*/
}
